package com.mrogrape.notepad.activity;

import java.io.File;
import java.util.List;

import com.mrogrape.notepad.ui.ClosableTabPanel;
import com.mrogrape.notepad.ui.editor.ContentType;
import com.mrogrape.notepad.ui.editor.TextEditor;


public interface MainFrame {

	/**
	 * 创建一个新的编辑器并添加至容器。
	 * 
	 * @param type
	 */
	public TextEditor createNewEditor(ContentType type);

	/**
	 * 创建一个新的编辑器并读取文件内容。
	 * @param file
	 * @return
	 */
	public TextEditor createNewEditor(File file);

	/**
	 * 创建一个新的，指定标题的编辑器并添加至容器
	 * @param type
	 * @param title
	 */
	public TextEditor createNewEditor(ContentType type, String title);

	/**
	 * 检查标题是否合法。
	 * 
	 * @param title
	 * @return
	 */
	public boolean checkTitleUseable(String title);

	/**
	 * 关闭指定的工作面板。
	 * 
	 * @param panel
	 */
	public void closeWorkPanel(ClosableTabPanel panel);

	/**
	 * 获取全部的文本编辑器。
	 * @return
	 */
	public List<TextEditor> getAllTextEditors();

	/**
	 * 获取工作区中全部的内容面板。
	 * 
	 * @return
	 */
	public List<ClosableTabPanel> getAllWorkPanels();

	/**
	 * 获取当前活动的文本编辑器，如果当前活动的面板不是文本编辑器，则返回null。
	 * 
	 * @return
	 */
	public TextEditor getCurrentTextEditor();

	/**
	 * 获取当前活动的工作面板。
	 * 
	 * @return
	 */
	public ClosableTabPanel getCurrentWorkPanel();

	/**
	 * 选中指定下标的工作面板
	 * 
	 * @param index
	 */
	public void setSelectedWorkPanel(int index);

	/**
	 * 选中指定的工作面板
	 * 
	 * @param workPanel
	 */
	public void setSelectedWorkPanel(ClosableTabPanel workPanel);

	/**
	 * 查看工具栏是否处于显示状态。
	 * 
	 * @return
	 */
	public boolean isToolbarVisible();

	/**
	 * 设置是否显示工具栏。
	 * 
	 * @param b
	 */
	public void setToolbarVisible(boolean b);
	
	/**
	 * 查看库视图是否处于显示状态。
	 * @return
	 */
	public boolean isLibraryPaneVisible();
	
	/**
	 * 设置库视图是否处于显示状态。
	 * 
	 * @param b
	 * @return
	 */
	public void setLibraryPaneVisible(boolean b);

	/**
	 * 显示主界面
	 */
	public void showFrame();
}
